package com.shujia.traffic.common

import org.apache.spark.internal.Logging
import org.apache.spark.sql.SparkSession
import org.slf4j.Logger

abstract class SparkUtil extends Logging{

  // 定义全局变量，保证在每一个方法中都可以直接使用
  var sparkSession: SparkSession = _
  var logger: Logger = log
  var day: String = _

  // 初始化环境
  def init(): Unit = {
    // 创建SparkSession环境
    sparkSession = SparkSession
      .builder()
      .appName(this.getClass.getSimpleName.replace("$", ""))
//      .master("local")
//      .config("spark.sql.shuffle.partitions", "1")
      .enableHiveSupport() // 开启Hive的支持
      .getOrCreate()
  }

  // 实现逻辑
  def run():Unit

  def main(args: Array[String]): Unit = {

    // 从args中获取分区日期参数
    if (args.length == 0){
      logger.error("分区参数为空，请检查分区日期！")
      return
    }
    day = args.head
    logger.info(s"正在处理的日期分区为：$day")

    // 先初始化环境，再执行处理数据的逻辑
    init()
    // 通过传参的方式给run方法中传入day
    run()
  }

}
